import random

WIDTH = 300
HEIGHT = 300

BACK_COLOR = (0, 0, 0)

class MyRect:
    def __init__(self, x, y, w, h, clr):
        self.x = x
        self.y = y
        self.w = w
        self.h = h
        self.clr = clr
        self.speed = 2
    def SetSpeed(self, speed):
        self.speed = speed
        
    def Update(self):
        self.x += self.speed
        if (self.speed > 0 and self.x + self.w // 2 > WIDTH) or (self.speed < 0 and self.x - self.w // 2 < 0):
            self.speed = -self.speed
            self.speed += self.speed * (random.random()- 0.5)
        
        if self.x + self.w // 2 > WIDTH:
            self.x = WIDTH - self.w // 2
        elif self.x - self.w // 2 < 0:
            self.x = self.w // 2

    def Draw(self):
        rc = Rect((self.x - self.w // 2, self.y - self.h // 2), (self.w, self.h))
        screen.draw.filled_rect(rc, self.clr)

clr_list = [
    (0, 200, 0),
    (200, 0, 0),
    (0, 0, 200),
    (0, 200, 200),
    (200, 0, 200),
    (200, 200, 0),
    (200, 200, 200),
]
rc_list = []
unit = 50
def reset():
    for r in range(0, 7):
        for c in range(0, 7):
            clr_index = random.randint(0, 6)
            clr = clr_list[clr_index]
            rc = MyRect(r * unit + unit // 2, c * unit + unit // 2, unit, unit, clr)
            rc.SetSpeed(random.randint(1, 10))
            rc_list.append(rc)

reset()

def on_key_down(key):
    if key == keys.ESCAPE:
        quit()
    elif key == keys.SPACE:
        reset()
        
def on_mouse_down(pos):
    print("mouse_down", pos)
    x = pos[0]
    y = pos[1]
    gx = x // unit
    gy = y // unit
    print(gx, gy)

def on_mouse_up(pos):
    print("mouse_up", pos)
    
def update():
    pass
        
def draw():
    screen.clear()
    screen.fill(BACK_COLOR)
    for rc in rc_list:
        rc.Draw()


